/**
 * 
 */
package br.com.ac.fatureweb.model.carga;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.com.ac.fatureweb.model.Carga;
import br.com.ac.fatureweb.utilitary.Model;

/**
 * @author aldivone
 *
 */
@Entity
@Table(name = "TARIFA")
@SequenceGenerator(name = "SEQ_TARIFA", sequenceName = "SEQ_TARIFA", allocationSize = 1, initialValue = 1)
public class Tarifa extends Model {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3023046390596484686L;

	@Id
	@GeneratedValue(generator = "SEQ_TARIFA", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	private Long id;

	@Column(name = "COD_TARIFA")
	private Long codigo;

	@Column(name = "ANO_TARIFA")
	private Integer ano;

	@Column(name = "MES_TARIFA")
	private Integer mes;

	@Column(name = "VAL_FIXOTARIFA")
	private Double valorFixo;

	@Column(name = "VAL_SEMHIDRO")
	private Double valorSemhidro;

	@Column(name = "SIG_TARIFA")
	private String sigla;

	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL)
	@JoinColumn(name = "ID_TARIFA", referencedColumnName = "ID")
	private List<Faixa> lstFaixa;

	@ManyToOne
	@JoinColumn(name = "ID_CARGA", referencedColumnName = "ID")
	private Carga carga;

	public Tarifa() {
		super();
	}

	public Tarifa(Long id) {
		super();
		this.id = id;
	}

	public Tarifa(Long id, Long codigo, Integer ano, Integer mes,
			Double valorFixo, Double valorSemhidro, String sigla,
			List<Faixa> lstFaixa, Carga carga) {
		super();
		this.id = id;
		this.codigo = codigo;
		this.ano = ano;
		this.mes = mes;
		this.valorFixo = valorFixo;
		this.valorSemhidro = valorSemhidro;
		this.sigla = sigla;
		this.lstFaixa = lstFaixa;
		this.carga = carga;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the ano
	 */
	public Integer getAno() {
		return ano;
	}

	/**
	 * @param ano
	 *            the ano to set
	 */
	public void setAno(Integer ano) {
		this.ano = ano;
	}

	/**
	 * @return the mes
	 */
	public Integer getMes() {
		return mes;
	}

	/**
	 * @param mes
	 *            the mes to set
	 */
	public void setMes(Integer mes) {
		this.mes = mes;
	}

	/**
	 * @return the valorFixo
	 */
	public Double getValorFixo() {
		return valorFixo;
	}

	/**
	 * @param valorFixo
	 *            the valorFixo to set
	 */
	public void setValorFixo(Double valorFixo) {
		this.valorFixo = valorFixo;
	}

	/**
	 * @return the valorSemhidro
	 */
	public Double getValorSemhidro() {
		return valorSemhidro;
	}

	/**
	 * @param valorSemhidro
	 *            the valorSemhidro to set
	 */
	public void setValorSemhidro(Double valorSemhidro) {
		this.valorSemhidro = valorSemhidro;
	}

	/**
	 * @return the sigla
	 */
	public String getSigla() {
		return sigla;
	}

	/**
	 * @param sigla
	 *            the sigla to set
	 */
	public void setSigla(String sigla) {
		this.sigla = sigla;
	}

	/**
	 * @return the lstFaixa
	 */
	public List<Faixa> getLstFaixa() {
		return lstFaixa;
	}

	/**
	 * @param lstFaixa
	 *            the lstFaixa to set
	 */
	public void setLstFaixa(List<Faixa> lstFaixa) {
		this.lstFaixa = lstFaixa;
	}

	/**
	 * @return the carga
	 */
	public Carga getCarga() {
		return carga;
	}

	/**
	 * @param carga
	 *            the carga to set
	 */
	public void setCarga(Carga carga) {
		this.carga = carga;
	}

}
